package evol

import grails.converters.XML
import java.net.URI.Parser;
import java.util.regex.Matcher
import java.util.regex.Pattern
import org.springframework.dao.DataIntegrityViolationException

class IstrazivanjeController extends OsnovniController {

	static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

	def index() {
		redirect(action: "list", params: params)
	}

	def list() {
		params.max = Math.min(params.max ? params.int('max') : 10, 100)
		[istrazivanjeInstanceList: Istrazivanje.list(params), istrazivanjeInstanceTotal: Istrazivanje.count()]
	}

	def create() {
		[istrazivanjeInstance: new Istrazivanje(params)]
	}

	def save() {
		def istrazivanjeInstance = new Istrazivanje(params)
		if (!istrazivanjeInstance.save(flush: true)) {
			render(view: "create", model: [istrazivanjeInstance: istrazivanjeInstance])
			return
		}

		flash.message = message(code: 'default.created.message', args: [
			message(code: 'istrazivanje.label', default: 'Istrazivanje'),
			istrazivanjeInstance.id
		])
		redirect(action: "show", id: istrazivanjeInstance.id)
	}

	def show() {
		def istrazivanjeInstance = Istrazivanje.get(params.id)
		if (!istrazivanjeInstance) {
			flash.message = message(code: 'default.not.found.message', args: [
				message(code: 'istrazivanje.label', default: 'Istrazivanje'),
				params.id
			])
			redirect(action: "list")
			return
		}

		[istrazivanjeInstance: istrazivanjeInstance]
	}

	def edit() {
		def istrazivanjeInstance = Istrazivanje.get(params.id)
		if (!istrazivanjeInstance) {
			flash.message = message(code: 'default.not.found.message', args: [
				message(code: 'istrazivanje.label', default: 'Istrazivanje'),
				params.id
			])
			redirect(action: "list")
			return
		}

		[istrazivanjeInstance: istrazivanjeInstance]
	}

	def update() {
		def istrazivanjeInstance = Istrazivanje.get(params.id)
		if (!istrazivanjeInstance) {
			flash.message = message(code: 'default.not.found.message', args: [
				message(code: 'istrazivanje.label', default: 'Istrazivanje'),
				params.id
			])
			redirect(action: "list")
			return
		}

		if (params.version) {
			def version = params.version.toLong()
			if (istrazivanjeInstance.version > version) {
				istrazivanjeInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
						[
							message(code: 'istrazivanje.label', default: 'Istrazivanje')]
						as Object[],
						"Another user has updated this Istrazivanje while you were editing")
				render(view: "edit", model: [istrazivanjeInstance: istrazivanjeInstance])
				return
			}
		}

		istrazivanjeInstance.properties = params

		if (!istrazivanjeInstance.save(flush: true)) {
			render(view: "edit", model: [istrazivanjeInstance: istrazivanjeInstance])
			return
		}

		flash.message = message(code: 'default.updated.message', args: [
			message(code: 'istrazivanje.label', default: 'Istrazivanje'),
			istrazivanjeInstance.id
		])
		redirect(action: "show", id: istrazivanjeInstance.id)
	}

	def delete() {
		def istrazivanjeInstance = Istrazivanje.get(params.id)
		if (!istrazivanjeInstance) {
			flash.message = message(code: 'default.not.found.message', args: [
				message(code: 'istrazivanje.label', default: 'Istrazivanje'),
				params.id
			])
			redirect(action: "list")
			return
		}

		try {
			istrazivanjeInstance.delete(flush: true)
			flash.message = message(code: 'default.deleted.message', args: [
				message(code: 'istrazivanje.label', default: 'Istrazivanje'),
				params.id
			])
			redirect(action: "list")
		}
		catch (DataIntegrityViolationException e) {
			flash.message = message(code: 'default.not.deleted.message', args: [
				message(code: 'istrazivanje.label', default: 'Istrazivanje'),
				params.id
			])
			redirect(action: "show", id: params.id)
		}
	}
	
	////-moje
	
	def istrazivanje={
		def levo=params
		Istrazivanje i= Istrazivanje.findById(params.idIstrazivanja)
		def rez=Rezultat.findAllByIstrazivanje(i)
		
		[lista:rez,is:i]
		//render?
	}

	def createSelect(){
		def b=params

		def idIstr=params.idIstr
		
		def a= b.keySet().toArray()
		def c=a.size()
		String pravi
		HashMap<Integer, ArrayList> veliko= new HashMap<Integer, ArrayList>()

		for (int i = 0; i <c/2-1; i++) {
			def fer= new ArrayList<Predmet>()
			fer.putAt(0, new Predmet())
			fer.putAt(1, new Predmet())
			veliko.put(i,fer )
		}

		for (int i = 0; i <c	; i++) {

			def r= b.getAt(a[i])

			if(r.toString().charAt(0)=='['){
				String pattern = "(\\[)(.*)(\\])"
				Pattern pattern1 = Pattern.compile(pattern);
				Matcher matcher = pattern1.matcher(r);
				matcher.find()
				pravi=matcher.group(2)
			}

			else{
				pravi=r
			}
			def p = Predmet.findByNaziv( pravi)
	
			if(a[i].toString().contains("predmet")){
				String[] part = a[i].split ('-')
				def char1=part[0].charAt(part[0].length()-1)

				String levo= char1.toString()

				def deo1
				if(levo.isNumber())
					deo1=Integer.parseInt(  levo )

				levo=part[1].charAt(part[1].length()-1).toString()
				def	 deo2
				if(levo.isNumber())
					deo2=Integer.parseInt(levo)
				

				if(deo1==1)veliko.get(deo2).putAt(0, p)
				else veliko.get(deo2).putAt(1, p)
				
			}
		}

		def dvaT=veliko as XML
		dvaT=dvaT.toString()
		
		redirect(action:'istrazivanje',controller:'predmet' , params:[xml:dvaT,idI:idIstr])
		//render veliko as XML
	}
}
